import hashlib
from urllib.parse import urlparse


def hash_url(url, force_to_https=False):
    """
    ### JM：所有的url都以https来hash，
    TODO: 问题就是singlefile在抓取的时候是以http来hash，会出现文件名的hash和这里计算的hash不一致的情况
    :param url: 如果不是url格式，则直接按字符串hash
    :param switch_to_https: 默认全使用https去做hash
    :return: 所有url最终都被转成https协议并hash
    """
    string_to_hash = url
    if force_to_https and url.startswith("http"):
        urlparse_result = urlparse(url)
        ### JM：重定向其实只可能发生在从Vault中来的url，Inbox中的url其实已经被重定向过了
        # if urlparse_result.hostname.endswith("csdn.net") and urlparse_result.scheme == "http":
        if urlparse_result.scheme == "http":
            urlparse_result = urlparse_result._replace(scheme="https")
            string_to_hash = urlparse_result.geturl()

    return hashlib.sha1(string_to_hash.encode("utf-8")).hexdigest()